package leetcode;


import java.util.HashSet;

/**
 * @ClassName Solution
 * @Desecription TODO 1.2新增
 * @Author gjy
 * @Date 2021/4/23 13:08
 * @Version 1.2
 **/
public class Solution {
    public static void main(String[] args) {
        /*int[] nums = new int[]{3,2,4};
        int target = 6;
        int[] sum = twoSum(nums, target);
        for (int i : sum) {
            System.out.println(i);
        }
        System.out.println("测试");*/
        int i = lengthOfLongestSubstring("abcdddwwwwefvnm");
        System.out.println(i);
    }

    private static int[] twoSum(int[] nums, int target) {
        System.out.println("进入到了测试");
            for (int i = 0; i < nums.length; i++) {
                for (int j = i + 1; j < nums.length ; j++) {
                    if (nums[j] + nums[i] == target) {
                        return new int[]{i,j};
                    }
                }
            }
        System.out.println("执行了方法");
            return null;
    }


    public static int lengthOfLongestSubstring(String s) {
        if(s.length()==0){
            return 0;
        }
        HashSet<Character> set = new HashSet<Character>();
        int index = 0;
        int ans = Integer.MIN_VALUE;
        for(int i=0;i<s.length();i++){
            if(!set.contains(s.charAt(i))){
                set.add(s.charAt(i));     //若新字符与set中的字符不重复，则直接加入set。
            }else{
                while(set.contains(s.charAt(i))){
                    set.remove(s.charAt(index++));  //若重复，则根据index在s中的位置，从左至右逐步删除，直到新字符在set中不存在为止。（此处不可直接删除s.charAt(i)）
                }
                set.add(s.charAt(i));  //将新字符加入set
            }
            ans = Math.max(ans,set.size());  //更新结果
        }
        return ans;
    }
}
